﻿using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;

namespace WenSkin.Controls
{
    public class WenDataGridViewTextBoxButtonCell : DataGridViewTextBoxCell
    {
        public WenDataGridViewTextBoxButtonCell() : base()
        {
        }
        public int Width { get; set; }
        public int Height { get; set; }
        public bool ButtonClick { get; set; }

        protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
        {
            base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
            Width = cellBounds.Width;
            Height = cellBounds.Height;

            //计算按钮区域
            Rectangle rec = new Rectangle(cellBounds.X + (cellBounds.Width - 15), cellBounds.Y + (cellBounds.Height - 20) / 2, 13, 20);
            if (ButtonClick)
            {
                ButtonRenderer.DrawButton(graphics, rec, PushButtonState.Pressed);
                ButtonClick = false;
            }
            else
            {
                ButtonRenderer.DrawButton(graphics, rec, PushButtonState.Normal);
            }
        }
        protected override void OnMouseClick(DataGridViewCellMouseEventArgs e)
        {
            base.OnMouseClick(e);
            //计算按钮区域
            Rectangle rec = new Rectangle(Width - 20, 0, Width, Height);

            if (rec.Contains(e.Location))
            {
                ButtonClick = true;
                if(this.DataGridView is WenDataGridView dataGridView)
                {
                    dataGridView.OnTextBoxButtonClick(e);
                }
            }
        }
    }
}
